﻿using QuanLyChoVayCaNhan.Classes;
using QuanLyChoVayCaNhan.Models;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace QuanLyChoVayCaNhan.Forms
{
    public partial class AddNhanVien : Form
    {
        private Models.NhanVien data = null;
        // them moi
        public AddNhanVien()
        {
            InitializeComponent();
            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
            this.MaximizeBox = false;
            this.MinimizeBox = false;
            this.data = new Models.NhanVien();
            this.data.MaNV = "NV" + (ModelManager.GetInstance().db.NhanViens.Count() + 1);
            this.btnLuu.Click += btnLuuThemMoi_Click;
            this.btnHuy.Click += btnHuyThemMoi_Click;
        }

        public AddNhanVien(MenuItemType type)
        {
            switch (type)
            {
                case MenuItemType.ADD:
                    InitializeComponent();
                    this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
                    this.MaximizeBox = false;
                    this.MinimizeBox = false;
                    this.data = new Models.NhanVien();
                    this.data.MaNV = "NV" + (ModelManager.GetInstance().db.NhanViens.Count() + 1);
                    this.btnLuu.Click += btnLuuThemMoi_Click;
                    this.btnHuy.Click += btnHuyThemMoi_Click;
                    break;
                case MenuItemType.VIEW:
                    InitializeComponent();
                    this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
                    this.MaximizeBox = false;
                    this.MinimizeBox = false;
                    this.data = ModelManager.GetInstance().db.NhanViens.ToList().ElementAt(WindowsManager.GetInstance().TabNhanVien.SelectedIndex);
                    this.chucVuComboBox.SelectedIndex = (this.data.GroupID - 1);
                    this.maNVTextBox.ReadOnly = this.tenNVTextBox.ReadOnly = this.nganHangTextBox.ReadOnly = this.chiNhanhTextBox.ReadOnly = this.passwordTextBox.ReadOnly = true;
                    this.chucVuComboBox.Enabled = false;
                    this.btnLuu.Text = "Sửa";
                    this.btnLuu.Click += btnLuuXem_Click;
                    this.btnHuy.Click += btnHuyXem_Click;
                    this.Text = "Xem thông tin";
                    break;
                case MenuItemType.EDIT:
                    InitializeComponent();
                    this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
                    this.MaximizeBox = false;
                    this.MinimizeBox = false;
                    this.data = ModelManager.GetInstance().db.NhanViens.ToList().ElementAt(WindowsManager.GetInstance().TabNhanVien.SelectedIndex);
                    this.maNVTextBox.ReadOnly = true;
                    this.chucVuComboBox.SelectedIndex = (this.data.GroupID - 1);
                    this.btnLuu.Click += btnLuuSua_Click;
                    this.btnHuy.Click += btnHuySua_Click;
                    this.Text = "Sửa thông tin";
                    break;
                default:
                    break;
            }
        }

        private void AddNhanVien_Load(object sender, EventArgs e)
        {
            this.nhanVienBindingSource.DataSource = this.data;
        }
        // them moi
        private void btnHuyThemMoi_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btnLuuThemMoi_Click(object sender, EventArgs e)
        {
            if (this.maNVTextBox.Text == null || this.maNVTextBox.Text.Length == 0)
            {
                MessageBox.Show("Bạn chưa nhập mã nhân viên");
            }
            if (this.tenNVTextBox.Text == null || this.tenNVTextBox.Text.Length == 0)
            {
                MessageBox.Show("Bạn chưa nhập tên nhân viên");
                return;
            }
            if (this.nganHangTextBox.Text == null || this.nganHangTextBox.Text.Length == 0)
            {
                MessageBox.Show("Bạn chưa nhập tên ngân hàng");
                return;
            }
            if (this.chiNhanhTextBox.Text == null || this.chiNhanhTextBox.Text.Length == 0)
            {
                MessageBox.Show("Bạn chưa nhập tên chi nhánh");
                return;
            }
            if (this.chucVuComboBox.SelectedIndex == -1)
            {
                MessageBox.Show("Bạn chưa chọn chức vụ");
                return;
            }
            if (this.passwordTextBox.Text == null || this.passwordTextBox.Text.Length == 0)
            {
                MessageBox.Show("Bạn chưa nhập password");
                return;
            }
            this.data.GroupID = this.chucVuComboBox.SelectedIndex + 1;
            this.data.Created = this.data.Modified = DateTime.Now;
            this.data.Password = UserManager.GetInstance().getMd5FromString(this.data.Password);
            ModelManager.GetInstance().db.NhanViens.Add(this.data);
            ModelManager.GetInstance().db.SaveChanges();
            this.Close();
        }

        // xem
        private void btnHuyXem_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btnLuuXem_Click(object sender, EventArgs e)
        {
            // xem xong click sua
            this.tenNVTextBox.ReadOnly = this.nganHangTextBox.ReadOnly = this.chiNhanhTextBox.ReadOnly = this.passwordTextBox.ReadOnly = false;
            this.btnLuu.Text = "Lưu";
            this.btnLuu.Click -= btnLuuXem_Click;
            this.btnLuu.Click += btnLuuSua_Click;
            this.Text = "Sửa thông tin";
        }

        // sua
        private void btnHuySua_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btnLuuSua_Click(object sender, EventArgs e)
        {
            if (this.tenNVTextBox.Text == null || this.tenNVTextBox.Text.Length == 0)
            {
                MessageBox.Show("Bạn chưa nhập tên nhân viên");
                return;
            }
            if (this.nganHangTextBox.Text == null || this.nganHangTextBox.Text.Length == 0)
            {
                MessageBox.Show("Bạn chưa nhập tên ngân hàng");
                return;
            }
            if (this.chiNhanhTextBox.Text == null || this.chiNhanhTextBox.Text.Length == 0)
            {
                MessageBox.Show("Bạn chưa nhập tên chi nhánh");
                return;
            }
            if (this.chucVuComboBox.SelectedIndex == -1)
            {
                MessageBox.Show("Bạn chưa chọn chức vụ");
                return;
            }
            if (this.passwordTextBox.Text == null || this.passwordTextBox.Text.Length == 0)
            {
                MessageBox.Show("Bạn chưa nhập password");
                return;
            }
            NhanVien nv = ModelManager.GetInstance().db.NhanViens.FirstOrDefault<NhanVien>(x => x.MaNV == this.maNVTextBox.Text);
            nv.TenNV = this.tenNVTextBox.Text;
            nv.NganHang = this.nganHangTextBox.Text;
            nv.ChiNhanh = this.chiNhanhTextBox.Text;
            nv.ChucVu = this.data.ChucVu;
            nv.GroupID = (this.chucVuComboBox.SelectedIndex + 1);
            nv.Password = UserManager.GetInstance().getMd5FromString(this.passwordTextBox.Text);
            nv.Modified = DateTime.Now;
            ModelManager.GetInstance().db.SaveChanges();
            this.Close();
        }
    }
}
